WaterPlanExecuteForm = Ext.extend(Ext.Window, {
	// 构造函数
	constructor : function(_cfg) {
		Ext.applyIf(this, _cfg);
		this.initUIComponents();
		WaterPlanExecuteForm.superclass.constructor.call(this, {
			id : 'WaterPlanExecuteFormWin',
			layout : 'fit',
			items : [ this.formPanel ],
			modal : true,
			height : 230,
			width : 350,
			labelWidth : 60,
			title : this.title,
			buttonAlign : 'center',
			buttons : this.buttons
		});
	},// end of the constructor
	// 初始化组件
	initUIComponents : function() {
		
		this.title = '执行计划';
		
		var addMode = true;
		if (this.isAutoPlan != null && this.isAutoPlan != 'undefined') {
			this.title = '执行变更';
			addMode = false;
		}
		var minDate = new Date().clearTime(); 
		var accountDay = this.accountDay;
		var planId = this.planId;
/*		if(accountDay < minDate.getDate()){
			minDate = minDate.add(Date.MONTH,1).getFirstDateOfMonth();//first date of next month
		}*/
		
		if(!addMode){
			Ext.Ajax.request({
				url : __ctxPath + '/pdaweb/getDetailWaterMeterPlan.do',
				method : 'post',
				params :{
					planId : this.planId
				},
				success : function(response, option) {
//					var json = eval("(" + response.responseText + ")");
					var json = Ext.decode(response.responseText);
					Ext.getCmp('executor').setValue(json.data.executor);
					Ext.getCmp('beginTime').setValue(json.data.beginTime);
					Ext.getCmp('endTime').setValue(json.data.endTime);
					Ext.getCmp('isAutoPlan').setValue(1);
				}
			});	
			
			this.buttons = [{
				text : '保存',
				iconCls : 'btn-save',
				scope : this,
				handler : function() {
					if(this.planStatus == 2)
					{
					   Ext.Msg.alert('操作提示','当月计划已经执行过！');
					}
					else
					{
						WaterPlanExecuteForm.alter(this.planId);
					}
				}
			}, {
				text : '取消',
				iconCls : 'btn-cancel',
				scope : this,
				handler : function() {
					Ext.getCmp("WaterPlanExecuteFormWin").close();
				}
			}]
		}else{
			this.buttons = [{
				text : '执行',
				iconCls : 'btn-save',
				scope : this,
				handler : function() {
					if(this.planStatus == 2)
					{
					   Ext.Msg.alert('操作提示','当月计划已经执行过！');
					}
					else
					{
						WaterPlanExecuteForm.execute(this.planId);
					}
				}
			}, {
				text : '取消',
				iconCls : 'btn-cancel',
				scope : this,
				handler : function() {
					Ext.getCmp("WaterPlanExecuteFormWin").close();
				}
			}]
		}
		
		// 初始化表单
		this.formPanel = new Ext.FormPanel({
			frame : true,
            plain : true,
			border : false,
			layout : 'form',
			id : 'WaterPlanExecuteViewForm',
			labelAlign : 'middle',
			style : 'padding:0 20px 0 20px',
			frame : true,
			border : true,
			defaultType : 'textfield',
			items : [{
				xtype : 'panel',
                layout : 'form',
                style : 'padding-left:16px',
				items : {
					xtype : 'combo',
					width : 120,
					hiddenName : 'username',
					id : 'executor',
					fieldLabel : '抄 表 人',
					valueField : 'username',
					displayField : 'fullname',
					mode : 'local',
					editable : false,
					allowBlank : false,
					triggerAction : 'all',
					store : new Ext.data.SimpleStore({
								url : __ctxPath
										+ '/pdaweb/showExecutorNameWaterMeterPlan.do?planId='+this.planId,
								autoLoad : true,
								remoteSort : true,
								fields : ['username', 'fullname']
							}),
					listeners : {
						scope : this,
						select : function(cbo, record, index) {
							Ext.getCmp('executor').setValue(cbo
									.getValue());
						}
					}
				}
			}, {
				xtype : 'fieldset',
				title : '抄表时段',
				items : {
					layout : 'form',
					frame : true,
					border : false,
					items : [{
						id : 'beginTime',
						fieldLabel : '开始时间',
						xtype : 'datefield',
						format : 'Y-m-d',
                        width : 120,
                        allowBlank : false,
						minValue : minDate,
						listeners : {
							'select' : function() {
								Ext.getCmp('endTime').setValue(""); //初始化结束时间
								if(this.getValue().clearTime().getDate() >= accountDay){
									Ext.Msg.alert('操作提示','开始时间要在月结日前');
									this.setValue("");
								}
							}
						}
					}, {
						id : 'endTime',
						fieldLabel : '结束时间',
						xtype : 'datefield',
						format : 'Y-m-d',
                        allowBlank : false,
                        width : 120,
						minValue : minDate,
						listeners : {
							'focus' : function() {/* 前逻辑思路
								var beginTime = Ext.getCmp('beginTime').getValue();
								if(beginTime == "" || beginTime == 'undefined'){
									Ext.Msg.alert('操作提示','请先选择开始时间');
									this.setValue("");
								}else{
									this.setMinValue(Ext.getCmp('beginTime').getValue());
									
									var beginTime = Ext.getCmp('beginTime').getValue().clearTime();
									//如果开始时间日值小于月结日    则结束时间最大不超过这个月月结日
									if(beginTime.getDate() < accountDay){
										var maxDate = beginTime.add(Date.DAY,accountDay-beginTime.getDate()-1);
										
									}else{//开始时间日值大于月结日  则结束时间最大不超过下个月月结日
										var maxDate = beginTime.add(Date.MONTH,1).add(Date.DAY,accountDay-beginTime.getDate()-1);
									}
									
									this.setMaxValue(maxDate);
								}
								
							*/
								var beginTime = Ext.getCmp('beginTime').getValue().clearTime();
								if(beginTime == "" || beginTime == 'undefined'){
									Ext.Msg.alert('操作提示','请先选择开始时间');
									this.setValue("");
								}else{
									this.setMinValue(beginTime);
									var maxDate = beginTime.add(Date.DAY,accountDay-beginTime.getDate()-1);
									this.setMaxValue(maxDate);
								}
								
							},
							'select' : function() {
								var beginTime = Ext.getCmp('beginTime').getValue();
								var endTime = this.getValue();
								//检测
								Ext.Ajax.request({
									url : __ctxPath + '/pdaweb/checkWaterMeterPlan.do',
									method : 'post',
									params :{
										planId : planId,
										beginTime : beginTime,
										endTime : endTime,
										accountDay : accountDay
									},
									success : function(response, option) {
//										var json = eval("(" + response.responseText + ")");
										var result = eval(eval("(" + response.responseText + ")").date).result;
										if(result=="false"){
												Ext.Msg.alert('操作提示','该计划在该月已经执行');
												Ext.getCmp('beginTime').setValue("");
												Ext.getCmp('endTime').setValue("");
										}
									}
								});
							}
						}
					}, {
						fieldLabel : '是否自动执行',
						id : 'isAutoPlan',
						xtype : 'checkbox',
						width : 120,
						inputValue : '1'
					}]
				}
			}]
		}); // end form
		
	}

});


/**
 * 执行变更方法
 */
WaterPlanExecuteForm.alter =function(planId) {

	var fp = Ext.getCmp('WaterPlanExecuteViewForm');
	if(fp.getForm().isValid()){
        fp.getForm().submit({
                url : __ctxPath + '/pdaweb/executeAlterWaterMeterPlan.do',
                params : {
                    planId : planId,
                    status : 1
                },
                waitMsg : '正在提交数据...',
                success : function(fp, action) {
                    Ext.ux.Toast.msg('操作信息', '保存成功！');
                    Ext.getCmp("WaterPlanExecuteFormWin").close();
                    Ext.getCmp('WaterPlanGrid').getStore().reload();
                },
                failure : function(fp, action) {
                    Ext.ux.Toast.msg('操作信息', '保存失败！');
                    Ext.getCmp('WaterPlanExecuteFormWin').close();
                }
            });
    }
}

/**
 * 执行计划方法
 */
WaterPlanExecuteForm.execute = function(planId) {
	var fp = Ext.getCmp('WaterPlanExecuteViewForm');
	if(fp.getForm().isValid()){
        fp.getForm().submit({
                url : __ctxPath + '/pdaweb/executeWaterMeterPlan.do',
                params : {
                    planId : planId,
                    status : 1
                },
                waitMsg : '正在提交数据...',
                success : function(fp, action) {
                    Ext.ux.Toast.msg('操作信息', '执行成功！');
                    Ext.getCmp("WaterPlanExecuteFormWin").close();
                    Ext.getCmp('WaterPlanGrid').getStore().reload();
                },
                failure : function(fp, action) {
                    Ext.ux.Toast.msg('操作信息', '执行失败！');
                    Ext.getCmp('WaterPlanExecuteFormWin').close();
                }
            });
    }
}